'use strict';
const Generator = require('yeoman-generator');
const chalk = require('chalk');
const yosay = require('yosay');

module.exports = class extends Generator {
    prompting() {
        // Have Yeoman greet the user.
        // this.log(yosay(
        //     'Welcome to the wicked ' + chalk.red('generator-mjgenerator') + ' generator!'
        // ));

        // prompt 是问题集合
        const prompts = [{
            type: 'confirm',
            name: 'someAnswer',
            message: 'Would you like to enable this option?',
            default: true
        }];

        return this.prompt(prompts).then(props => {
            // To access props later use this.props.someAnswer;
            console.log('props', props);
            this.props = props;
        });
    }

    writing() {
        this.fs.copy(
            this.templatePath('Engineering'),
            this.destinationPath('Engineering')
        );
    }

    install() {
        this.installDependencies();
    }
};




// 一个 Yeoman Generator 被创建后（构造函数必然是最先被调用的），会依次调用它原型上的方法，且每一个方法中的 this 都被绑定为 Generator 实例本身，调用的顺序如下：

// initializing - 初始化一些状态之类的，通常是和用户输入的 options 或者 arguments 打交道，这个后面说。
// prompting - 和用户交互的时候（命令行问答之类的）调用。
// configuring - 保存配置文件（如 .babelrc 等）。
// default - 其他方法都会在这里按顺序统一调用。
// writing - 在这里写一些模板文件。
// conflicts - 处理文件冲突，比如当前目录下已经有了同名文件。
// install - 开始安装依赖。
// end -.